texture colorMap;
texture lightMap;

sampler colorSampler = sampler_state
{
	Texture = <colorMap>;	
	AddressU = CLAMP;
	AddressV = CLAMP;
};

sampler lightSampler = sampler_state
{
	Texture = <lightMap>;	
	AddressU = CLAMP;
	AddressV = CLAMP;
};

struct VertexShaderInput
{
	float3 Position : POSITION0;
	float2 TexCoord : TEXCOORD0;
};

struct VertexShaderOutput
{
	float4 Position : POSITION0;
	float2 TexCoord : TEXCOORD0;
};

float2 halfPixel;
VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
{
	VertexShaderOutput output;
	output.Position = float4(input.Position,1);
	output.TexCoord = input.TexCoord - halfPixel;
	return output;
}

float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
{
	float3 diffuseColor = tex2D(colorSampler,input.TexCoord).rgb;
	float4 light = tex2D(lightSampler, input.TexCoord);
	float3 diffuseLight = light.rgb;
	float specularLight = light.a;
	
	return float4((diffuseColor * diffuseLight + specularLight),1);
}

technique Technique1
{
	pass Pass1
	{
		VertexShader = compile vs_2_0 VertexShaderFunction();
		PixelShader = compile ps_2_0 PixelShaderFunction();
	}
}